# encoding:utf8
import inspect

from configuration.logger import logger


def getfuntion(obj, method):
    """
    反射获取函数和参数列表长度
    object: 类名
    method：方法名
    """
    try:
        fun = getattr(obj, method)
    except Exception as e:
         return None
    arg = inspect.getfullargspec(fun).__str__()
    arg = arg[arg.find('args=') + 5:arg.find(', varargs')]
    arg = eval(arg)
    arg.remove('self')
    return fun, len(arg)


def runcase(obj, line):
    if len(line[0]) > 0 or len((line[1])) > 0:
        # 分组信息不执行
       return
    func = getfuntion(obj, line[3])
    if func is None :
        logger.info("关键字不存在%s不存在" % line[3])
        return
    # 判断方法参数有几个，就去执行对应的line
    if func[1] == 0:
        func[0]()
    elif func[1] == 1:
        func[0](line[4])
    elif func[1] == 2:
        func[0](line[4], line[5])
    elif func[1] == 3:
        func[0](line[4], line[5], line[6])
    else:
        print("关键字参数暂不支持3个参数")
        logger.warning("关键字参数暂不支持3个参数")


